<script>
  // 给你一个整数 x ，如果 x 是一个回文整数，返回 true ；否则，返回 false 。

  // 回文数是指正序（从左向右）和倒序（从右向左）读都是一样的整数。

  // 例如，121 是回文，而 123 不是

  // **** 题源：leetcode 9

  //   输入：x = 121
  //   输出：true

  //   输入：x = 10
  //   输出：false
  //   解释：从右向左读, 为 01 。因此它不是一个回文数。

  //   输入：x = -121
  //   输出：false  所有 < 0 的数 为false
  //   解释：从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。

  /**
   * 分析 两种解法
   * 字符串方法 把 number x 反转 判断是否和 原来的字符相等 即可
   * 数学法
   * 不通过转换字符串
   * 写一个算法 把 x 的值 从 最高位数累加到相同的位数 存入一个 temp 中
   * 比如 121 的算法过程
   * 1
   * 12
   * 121
   * 最后 比较 temp 是否和 x 相等
   * 值得
   */

  /**
   * @param {number} x
   * @return {boolean}
   */
  var isPalindrome = function (x) {
    if (x < 0) return false;
    if (!(x % 10) && x) return false;
    var temp = 0,
      x2 = x;
    while (x2) {
      temp = temp * 10 + (x2 % 10);
      x2 = ~~(x2 / 10);
    }
    return x === temp;
  };

  // 优化 在内存上进行优化
  //   var isPalindrome = function (x) {
  //     if (x < 0 || (!(x % 10) && x)) return false;
  //     var temp = 0;
  //     while (x > temp) {
  //       temp = temp * 10 + (x % 10);
  //       x = ~~(x / 10);
  //     }
  //     return x === temp || x === ~~(temp / 10);
  //   };
</script>
